home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
hity wydania
/
Bank smakow
/
BankSmakow.air
/
BankSmakow.swf
/
scripts
/
com
/
makingwaves
/
sql
/
DatabaseManager.as
next >
Wrap
Text File
|
2009-12-16
|
5KB
|
146 lines
package com.makingwaves.sql
{
import com.makingwaves.config.Configuration;
import flash.data.SQLConnection;
import flash.data.SQLSchemaResult;
import flash.data.SQLTableSchema;
import flash.events.SQLErrorEvent;
import flash.filesystem.File;
import flash.utils.Dictionary;
import mx.core.Application;
public class DatabaseManager
{
private static var allowInstantiation:Boolean;
private static var instance:DatabaseManager;
private var initComplete:Boolean = false;
private var _connection:SQLConnection;
public function DatabaseManager()
{
super();
if(allowInstantiation)
{
openDatabaseConnection();
return;
}
throw new Error("Use getInstance()");
}
public static function getInstance() : DatabaseManager
{
if(instance == null)
{
allowInstantiation = true;
instance = new DatabaseManager();
allowInstantiation = false;
}
return instance;
}
private function errorHandler(param1:SQLErrorEvent) : void
{
trace("Error code:",param1.error.errorID);
trace("Details:",param1.error.message);
}
private function openDatabaseConnection() : void
{
var _loc1_:File = File.applicationStorageDirectory.resolvePath(Application.application.name + ".db");
_connection = new SQLConnection();
_connection.open(_loc1_);
}
public function isSchemaComplete() : Boolean
{
var schema:SQLSchemaResult = null;
try
{
_connection.loadSchema(SQLTableSchema);
schema = _connection.getSchemaResult();
if(schema != null && schema.tables.length > 0)
{
return true;
}
return false;
}
catch(e:Error)
{
trace("Error retrieving schema");
return false;
}
}
public function getAllRecipes() : Array
{
var _loc4_:Object = null;
var _loc5_:Array = null;
refreshSchema();
var _loc1_:Configuration = Configuration.getInstance();
var _loc2_:StatementExecutor = new StatementExecutor(_connection);
var _loc3_:Array = _loc2_.execute(_loc1_.getAllRecipesSQL,null).data;
for each(_loc4_ in _loc3_)
{
_loc5_ = getRecipeIngredients(_loc4_.id);
_loc4_.products = _loc5_;
}
return _loc3_;
}
public function getRecipes(param1:String) : Array
{
var _loc6_:Object = null;
var _loc7_:Array = null;
this.refreshSchema();
var _loc2_:Configuration = Configuration.getInstance();
var _loc3_:StatementExecutor = new StatementExecutor(_connection);
var _loc4_:String = (_loc4_ = _loc2_.getRecipesSQL).replace(/:products/g,param1);
var _loc5_:Array = _loc3_.execute(_loc4_,null).data;
for each(_loc6_ in _loc5_)
{
_loc7_ = getRecipeIngredients(_loc6_.id);
_loc6_.products = _loc7_;
}
return _loc5_;
}
public function close() : void
{
_connection.close();
}
public function getCategories() : Array
{
var _loc1_:Configuration = Configuration.getInstance();
var _loc2_:StatementExecutor = new StatementExecutor(_connection);
return _loc2_.execute(_loc1_.getCategoriesSQL,null).data;
}
public function getProducts() : Array
{
var _loc1_:Configuration = Configuration.getInstance();
var _loc2_:StatementExecutor = new StatementExecutor(_connection);
return _loc2_.execute(_loc1_.getProductsSQL).data;
}
public function refreshSchema() : void
{
_connection.loadSchema();
}
private function getRecipeIngredients(param1:int) : Array
{
var _loc2_:Configuration = Configuration.getInstance();
var _loc3_:StatementExecutor = new StatementExecutor(_connection);
var _loc4_:Dictionary;
(_loc4_ = new Dictionary())[":recipeId"] = param1;
return _loc3_.execute(_loc2_.getRecipeIngredientsSQL,_loc4_).data;
}
}
}